1. Field of the Invention
This invention relates to computer system performance analysis. In particular, this invention relates to analyzing performance of a microprocessor which executes multiple instructions simultaneously.
2. Discussion of the Related Art
A relatively recent architecture for microprocessors, known as the "superscaler" architecture, enables multiple instructions to be executed in the microprocessor in parallel. By allowing parallel execution of multiple instructions, very high processing speed can be achieved. For at least two reasons, however, most programs designated to run on such microprocessors are still written as a sequence of instructions expected to be executed in a prescribed order. First, most high level programming languages favored by the majority of programmers are semantically primarily sequential, i.e. such programming languages provide no construct to allow the programmer to designate parallel execution. Second, inherent data dependency exists in any algorithm, such that certain operations are required to be carried out in a prescribed sequence in order to yield the correct result. Thus, an important challenge in a superscaler design is to provide a scheduling mechanism whereby the multiple instructions that are executed in parallel do so in such a manner that the correct result is obtained, even though some instructions may be executed completely out of order.
Clearly, to ensure that the complex logic circuit that controls and schedules instruction execution in a superscaler microprocessor is operating correctly, it is desirable to be able to trace and to debug the complex execution sequences expected to be occurring in such a microprocessor. Further, during the development of a microprocessor, the ability to accurately analyze the performance of a given circuit architecture is important to help the designer make design decisions. Such performance analysis is impossible without a tool which allows good visibility into the complex operations of such a microprocessor. Such a tool can be used in analyzing other complex logic circuits, in addition to the use discussed above.